package javafoundation.thread;


/**
 * @ClassName V_01_继承Thread类
 * @Description TODO
 * @Author dzf
 * @Date 2023/3/2 10:04
 * @Version 1.0
 */
//一个线程就是一个Thread对象
//多线程就是通过构造器创建多个对象
    /* 构造器就是 Thread() 方法

    public Thread() {
        init(null, null, "Thread-" + nextThreadNum(), 0);
    }
    public Thread(Runnable target) {
        init(null, target, "Thread-" + nextThreadNum(), 0);
    }
     */

public class V_01_继承Thread类 {

        //实现的步骤：
        //
        //1. 创建Thread类的子类
        //2. 重写run方法
        //3. 创建线程对象
        //4. 启动线程
    public static void main(String[] args) {
        //创建两个线程
        ThreatTest01 test01 = new ThreatTest01(1);
        ThreatTest02 test02 = new ThreatTest02(2);

        // 启动新的线程
        //start方法并不能直接开启一个新的线程，真正开启线程的是 CPU
        //当CPU空闲或者分配到此任务的时候就会创建一个新的线程，然后执行run方法中的代码
        test01.start();
        test02.start();

        //1. 启动线程是使用start方法而不是run方法
//        test01.run(); // 这个显示的是调用Thread的run方法 而不是启动一个新的线程

        //2. 线程不能启动多次，如果要创建多个线程，那么就需要创建多个Thread对象
    }
}

class ThreatTest01 extends Thread {
    private Integer id;

    public ThreatTest01(Integer id) {
        this.id = id;
    }

    @Override
    public void run() {
        for (int i = 1; i<11; i++){
            System.out.println("我是线程"+id+"的第"+i+"次执行");
        }
    }
}

class ThreatTest02 extends Thread {
    private Integer id;

    public ThreatTest02(Integer id) {
        this.id = id;
    }

    @Override
    public void run() {
        for (int i = 1; i<11; i++){
            System.out.println("我是线程"+id+"的第"+i+"次执行");
        }
    }
}
